草庐IT

C++ 变暖标准 vector

全部标签

python - c++将 vector 的内容作为参数传递给函数

在python中我们可以这样做:deftest(a,b,c):returna+b+cx=[1,2,3]y=test(*x)我们可以用C++做类似的事情吗? 最佳答案 目前提出的解决方案是基于对函数参数的运行时迭代,这会产生一些成本。他们还假设参数类型相同。如果参数的数量在编译时已知(通常是这样),那么一个不同的解决方案就像templateautotuple_call3(F&&f,constT&t)->decltype(std::forward(f)(std::get(t),std::get(t),std::get(t))){retu

c++ - 在结构 vector 中初始化一个 vector

我有一个包含vector的结构vector,但我不知道如何初始化结构中的字段。我有以下代码:structmember{vector>rival_result;intmatches;}vectorranking(n);我想将结构内vector的大小设置为另一个vector的大小,并在所有字段(匹配项和对vector的整数)中设置0。N可以是一个很大的数字,因此无法手动完成。谢谢。 最佳答案 首先为member编写一个构造函数来设置vector的大小:structmember{explicitmember(intn):rival_res

c++ - Valgrind 报告标准库中未初始化的值 (vfprintf.c)

我有一个函数可以将vsnsprintf放入在堆栈上创建的对象的临时缓冲区中。在对象的构造函数中,我将缓冲区的第一个字符初始化为空。Valgrind提示在vfprintf.c的堆栈上创建了一个未初始化的值下面是完整的工作示例,后面是valgrind输出#include#include#includestructtmp_buf{tmp_buf(){*b=0;}mutablecharb[1024];};charconst*va_stack_str(constchar*format,va_listap,consttmp_buf&b=tmp_buf()){vsnprintf(b.b,sizeof

c++ - Vector size() 返回看似随机的大整数

我正在编写一个作业程序,遇到了一个奇怪的问题。当尝试使用size()函数获取二维vector的大小时,我得到看似随机的大整数,这使我的程序无法运行。我需要大小来访问vector中的元素。我的头文件:#ifndef_MATRIX_H#define_MATRIX_H#include#includeclassMatrix{private://intdimension;std::vector>matrix;public:Matrix();Matrix(std::vector>);voidprint();Matrixoperator-(Matrixoperand);};#endif我的实现文件:

c++ - 在跳过对角线的 vector 上映射上三角矩阵

我有一个问题可以归结为找到一种将三角矩阵映射到跳过对角线的vector的方法。基本上我需要使用Gecode库翻译这段C++代码//impliedconstraintsfor(intk=0,i=0;i进入这个MiniZinc(功能)代码constraintforall(iin1..m-1,jini+1..m)((differences[?])>=(floor(int2float((j-i)*(j-i+1))/int2float(2))));我需要找出differences[?]中的索引。MiniZinc是一种函数/数学语言,没有合适的for循环。因此,我必须将那些触及上三角矩阵所有且仅触

c++ - 用户自定义转换的第二个标准转换顺序

我对标准转换序列术语有误解。我遇到了以下引用N3797§8.5.3/5[dcl.init.ref]:—Iftheinitializerexpression—isanxvalue(butnotabit-field),classprvalue,arrayprvalueorfunctionlvalueand“cv1T1”isreference-compatiblewith“cv2T2”,or—hasaclasstype(i.e.,T2isaclasstype),whereT1isnotreference-relatedtoT2,andcanbeconvertedtoanxvalue,clas

c++ - 为什么有些东西在 C++ 中留下未定义的行为?如果其中一些在标准中预先定义不是更好吗?

我是C++程序员。在网上冲浪期间,我熟悉了未定义行为、未指定行为、实现定义行为等术语。我想知道为什么有些事情没有定义?我知道C++与硬件很接近,但是真的很难为它们中的某些定义行为吗?如果是这样,他们为什么不这样做?这个问题是关于遗漏如此多的行为以供编译器实现的哲学。我认为并相信这样做有以下两个优点:1)Itallowsbetterperformance.Itsimplifiesthejobofcompiler,makingitpossibletogenerateveryefficientcodeincertainsituations.2)Itallowsflexibilitytocom

c++ - DosBox 中的 vector 头文件

我正在使用DosBox0.74并且我想使用vectors函数,但是我找不到它的头文件?它不是也不.我在VisualStudio中尝试过,它运行良好。它在DosBox中有不同的名称还是什么?请帮助我,因为我必须使用DOSBox提交我的工作。 最佳答案 vector是在TurboC++之后用C++实现的。事实上,C++(作为我们今天所知的标准化语言)直到TurboC++之后才存在!这是一个真正古老的IDE,任何人都会建议不要使用它。最好使用本世纪的IDE。因此,没有像这样的STL库在TurboC++中。简单地说,您不能在TurboC++

c++ - 排序 vector 上 std::lower_bound 的时间复杂度

我正在研究http://www.cplusplus.com/reference/algorithm/upper_bound/的std::upper_bound我发现这可能会在非随机访问迭代器上以线性时间运行。我需要将其用于排序vector。现在我不知道什么是非随机访问迭代器以及它是否会在排序后的vector上以对数时间运行。谁能帮我解决这个问题。 最佳答案 §23.3.6.1[vector.overview]/p1:Avectorisasequencecontainerthatsupportsrandomaccessiterator

c++ - 如何传递特征矩阵行引用,将其视为 vector ?

我有一个对Vector引用进行操作的函数,例如voidauto_bias(constEigen::VectorXf&v,Eigen:Ref>out){out=...}有时我需要让这个函数在Matrix行上运行。现在,因为默认的内存布局是列优先的,所以我不能只将行指向的数据映射到vector中。那么,如何将行传递给上述函数以便我可以对其进行操作?不太好的解决方案是有一个临时vector,例如VectorXftmpVec=matrix.row(5);auto_bias(otherVector,tmpVec);matrix.row(5)=tmpVec;但是有没有办法直接做呢?